package handler.client;

import handler.dataPackage.DriverDeviceMessage;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;

/**
 * @author dfj@99chuxing.com
 * @date 2018/4/4 0004 10:48
 * 客户端编码器，将我们发送的数据(一个对象，一个字符串，一个列表等)，编码成字节流
 *
 */
public class ClientEncoder extends MessageToByteEncoder<String>{

    /**
     * 对出站数据进行编码，转换成字节流  它被调用时将会传入要被该类编码为 ByteBuf 的（类型为 I 的）出站消息。该 ByteBuf 随后将会被转发给 ChannelPipeline中的下一个 ChannelOutboundHandler
     * @param channelHandlerContext
     * @param driverDeviceMessage
     * @param byteBuf
     * @throws Exception
     */
    @Override
    protected void encode(ChannelHandlerContext channelHandlerContext, String driverDeviceMessage, ByteBuf byteBuf) throws Exception {
        System.out.println("编码器对出站数据进行编码------------"+driverDeviceMessage);
        byteBuf.writeBytes(driverDeviceMessage.getBytes());

    }
}
